package com.sinog.basic.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sinog.core.domain.Resource;
import com.sinog.core.utilbean.Result;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @desc 系统管理 - 资源管理 - 资源管理 - ResourceService
 * @author zy
 * @date 2019年6月20日 18点00分
 */
@RestController
public interface ResourceService extends IService<Resource> {

    /**
     * 系统管理 - 资源管理 - 资源管理 - 保存资源信息信息
     * @param resource resource
     * @return Result
     */
    @PostMapping("/api/sinog2c-basic/resource")
    Result save(String resource);

    /**
     * 系统管理 - 资源管理 - 资源管理 - 批量删除资源信息信息
     * @param ids ids
     * @return Result
     */
    @DeleteMapping("/api/sinog2c-basic/resource")
    Result deleteBatch(@RequestBody String[] ids);

    /**
     * 系统管理 - 资源管理 - 资源管理 - 根据ID查询单个资源信息
     * @param id id
     * @return Result
     */
    @GetMapping("/api/sinog2c-basic/resource/{id}")
    Result selectOne(@PathVariable String id);

    /**
     * 系统管理 - 资源管理 - 资源管理 - 加载资源管理模块的资源树
     * @param reskey reskey
     * @return Result
     */
    @GetMapping("/api/sinog2c-basic/resources/{reskey}")
    Result selectResourceAsTree(@PathVariable String reskey);

    /**
     * 系统管理 - 资源管理 - 资源管理 - 复制自己的资源到某一个资源菜单下
     * @param src src
     * @param dest dest
     * @return Result
     * @throws CloneNotSupportedException CloneNotSupportedException
     */
    @PostMapping("/api/sinog2c-basic/resource/copy")
    Result copyResources(@RequestParam Long src,@RequestParam Long dest) throws CloneNotSupportedException;

    /**
     * 系统管理 - 资源管理 - 资源管理 - 加载首页导航栏菜单
     * @param account account
     * @return Result
     */
    @GetMapping("/api/sinog2c-basic/resource/menu")
    Result selectResouceMenu(@RequestParam String account);
}